local plr = owner char = plr.Character huma = char.Humanoid if huma.RigType ~= Enum.HumanoidRigType.R15 then error('trol') end script.Parent = char lowerTorso = char.LowerTorso root = char.HumanoidRootPart local c1Store = lowerTorso.Root.C1 local normalize = Vector3.new(1,0,1) local tiltFactor = .5 huma.WalkSpeed = 75 local goofyrun = Instance.new("Sound",root) goofyrun.SoundId = "rbxassetid://1839139324" goofyrun.Looped = true goofyrun.Volume = 1 goofyrun:Play() local hed = char.Head local uptors = char.UpperTorso local animate = char.Animate local run = animate.run local runanim = run:FindFirstChildOfClass("Animation") runanim.AnimationId = "http://www.roblox.com/asset/?id=3236836670" local enabled = true plr.Chatted:Connect(function(msg) local sub = msg:sub(1,#msg) if msg == "toggle" and enabled == true then enabled = false print'Disabled' elseif msg == "toggle" and enabled == false then enabled = true print("Enabled!") end end) local debounce = false --lowertorso head and uppertorso local raycastparam = RaycastParams.new() raycastparam.FilterDescendantsInstances = {char} raycastparam.FilterType = Enum.RaycastFilterType.Blacklist local partraycasted = workspace:Raycast(root.Position,Vector3.new(0,-2000000000,0),raycastparam) for i,v in pairs(char:GetChildren()) do if v:IsA("BasePart") and v == uptors or v == lowerTorso or v == hed then v.Touched:Connect(function(hit) if enabled == true then if hit then if root.Velocity.Magnitude > 1 then if not hit:IsDescendantOf(char) then if hit.Parent:FindFirstChildOfClass("Humanoid") then if debounce == false then debounce = true local human = hit.Parent:FindFirstChildOfClass("Humanoid") local hroot = human.RootPart human.PlatformStand = true if hroot:FindFirstChildOfClass("BodyVelocity") == nil then local hbp = Instance.new("BodyVelocity",hroot) hbp.MaxForce = Vector3.new(math.huge,math.huge,math.huge) hbp.Velocity = (root.Position - hit.Position).unit * -75 + Vector3.new(0,90,0) human:TakeDamage(10) spawn(function() wait(1) human.PlatformStand = false end) spawn(function() wait(.1) hbp:Destroy() debounce = false end) end end end if hit.Parent:FindFirstChildOfClass("Humanoid") == nil then if hit.Anchored == true and hit.Size.Magnitude < 70 then if hit ~= partraycasted.Instance then pcall(function() hit.Anchored = false hit.CanCollide = false if hit:FindFirstChildOfClass("BodyVelocity") == nil then local hbp = Instance.new("BodyVelocity",hit) game:GetService("Debris"):AddItem(hbp,0) hbp.MaxForce = Vector3.new(math.huge,math.huge,math.huge) hbp.Velocity = (root.Position - hit.Position).unit * -45 + Vector3.new(0,45,0) hit.AssemblyAngularVelocity = (root.Position - hit.Position).unit * -25 + Vector3.new(0,0,0) spawn(function() wait(.1) hbp:Destroy() end) if hit.Parent.ClassName ~= "Accessory" then hit:BreakJoints() end spawn(function() wait(.5) if hit.Parent.ClassName ~= "Accessory" then hit.CanCollide = true end end) end end) end end if hit.Anchored == false and hit.Size.Magnitude < 70 then if hit ~= partraycasted.Instance then pcall(function() hit.Anchored = false hit.CanCollide = false if hit:FindFirstChildOfClass("BodyVelocity") == nil then local hbp = Instance.new("BodyVelocity",hit) game:GetService("Debris"):AddItem(hbp,0) hbp.MaxForce = Vector3.new(math.huge,math.huge,math.huge) hbp.Velocity = (root.Position - hit.Position).unit * -75 + Vector3.new(0,75,0) hit.AssemblyAngularVelocity = (root.Position - hit.Position).unit * -25 + Vector3.new(0,0,0) spawn(function() wait(.1) hbp:Destroy() end) if hit.Parent.ClassName ~= "Accessory" then hit:BreakJoints() end spawn(function() wait(.5) if hit.Parent.ClassName ~= "Accessory" then hit.CanCollide = true end end) end end) end end end end end end end end) end end local oldpos = root.Position local vfx = Instance.new("Folder",char) local Angle = 0 local raypm = RaycastParams.new() raypm.FilterDescendantsInstances = {vfx,char} raypm.FilterType = Enum.RaycastFilterType.Blacklist for i,v in pairs(huma:GetChildren()) do if v:IsA("NumberValue") then v.Value = 1.3 end end game:GetService("RunService").Heartbeat:Connect(function() local movementVector = root.Velocity*normalize*tiltFactor partraycasted = workspace:Raycast(root.Position,Vector3.new(0,-2000000000,0),raycastparam) movementVector = (root.CFrame-root.CFrame.p):Inverse()*movementVector local x = math.rad(movementVector.X) local z = math.rad(movementVector.Z) local newpos = root.Position local distance = (oldpos - newpos).Magnitude local goalCFrame = CFrame.Angles(-z,0,x) if huma.MoveDirection.Magnitude < 1 then goalCFrame = CFrame.Angles(-z,0,x) else local goalCFrame = CFrame.new(0,2,0) * CFrame.Angles(-z,0,x) end lowerTorso.Root.C1 = lowerTorso.Root.C1:Lerp(goalCFrame,0.25) if distance > 75/6 and huma.MoveDirection.Magnitude >0 and huma:GetState() ~= Enum.HumanoidStateType.Freefall then oldpos = newpos local sound = Instance.new("Sound",root) sound.SoundId = "rbxassetid://198360470" sound.Volume =2 sound.Pitch = math.random(1,2)/1.5 sound:Play() for i = 1,15 do local a = Instance.new("Part",vfx) a.Size = Vector3.new(.5,.5,.5) a.Anchored = false a.CFrame = root.CFrame * CFrame.fromEulerAnglesXYZ(0,math.rad(Angle),0) * CFrame.new(1,5,0) a.Velocity = Vector3.new(math.random(-50,50),90,math.random(-50,50)) a.CanCollide = false game:GetService("Debris"):AddItem(a,1) local rc = workspace:Raycast(a.CFrame.p,a.CFrame.UpVector *-35,raypm) if rc then a.Position = rc.Position a.Material = rc.Instance.Material a.Color = rc.Instance.Color a.Orientation = Vector3.new(math.random(-180,180),math.random(-180,180),math.random(-180,180)) Angle += 25 end end spawn(function() wait(1) sound:Destroy() end) end end)